#ifndef COMMTRAFF_STRESS_TEST_H
#define COMMTRAFF_STRESS_TEST_H

#include "commtraff.h"
#include <time.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

// 间隔模式枚举
typedef enum {
    INTERVAL_FIXED = 1,     // 固定间隔
    INTERVAL_RANDOM = 2     // 随机间隔
} IntervalMode;

// 高级多类型插入配置结构
typedef struct {
    int enabled;        // 是否启用此类型
    int interval;       // 插入间隔（秒）
    int next_insert;    // 下次插入的时间点
    const char *name;   // 类型名称
} AdvancedConfig;

// 压力测试主要功能函数
void HandleSingleTypeTimed(void);
void HandleBatchInsertion(void);
void HandleBatchRead(void);
void HandleAdvancedInsertion(void);
void HandleAdvancedRead(void);
void HandleSingleTypeRead(void);

// 辅助功能函数
int GenerateRandomInterval(int min_seconds, int max_seconds);
void ExecuteAllTypeMockInsertion(void);
void ExecuteAllTypeTraffQuery(void);
void ExecuteTraffQuery(int traff_type);
void ExecuteMockTraffInsertion(int traff_type);

// 间隔处理函数
void HandleFixedIntervalInsertion(int traff_type);
void HandleRandomIntervalInsertion(int traff_type);
void HandleFixedIntervalRead(int traff_type);
void HandleRandomIntervalRead(int traff_type);

// 回调函数
void OnTimedQuery(CommTraff* records, int32_t nums);
void OnTimedComplete(int32_t reason, int32_t total);

// 菜单打印函数
void PrintIntervalModes(void);
void PrintAdvancedConfigMenu(AdvancedConfig configs[]);

#ifdef __cplusplus
}
#endif

#endif // COMMTRAFF_STRESS_TEST_H
